home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1995 August: Tool Chest / Dev.CD Aug 95 TC / Dev.CD Aug 95 TC.toast / Tool Chest / Interfaces / UniversalInterfaces 2.0 / CIncludes / TextUtils.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-04-18  |  18.9 KB  |  491 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        TextUtils.h
  3.  
  4.      Contains:    Text Utilities Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Package:    Universal Interfaces 2.0 in “MPW Latest” on ETO #17
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs@applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. */
  19.  
  20. #ifndef __TEXTUTILS__
  21. #define __TEXTUTILS__
  22.  
  23.  
  24. #ifndef __TYPES__
  25. #include <Types.h>
  26. #endif
  27. /*    #include <ConditionalMacros.h>                                */
  28.  
  29. #ifndef __SCRIPT__
  30. #include <Script.h>
  31. #endif
  32. /*    #include <Quickdraw.h>                                        */
  33. /*        #include <MixedMode.h>                                    */
  34. /*        #include <QuickdrawText.h>                                */
  35. /*    #include <IntlResources.h>                                    */
  36. /*    #include <Events.h>                                            */
  37. /*        #include <OSUtils.h>                                    */
  38. /*            #include <Memory.h>                                    */
  39.  
  40. #ifndef __OSUTILS__
  41. #include <OSUtils.h>
  42. #endif
  43.  
  44. #ifdef __cplusplus
  45. extern "C" {
  46. #endif
  47.  
  48. #if PRAGMA_ALIGN_SUPPORTED
  49. #pragma options align=mac68k
  50. #endif
  51.  
  52. #if PRAGMA_IMPORT_SUPPORTED
  53. #pragma import on
  54. #endif
  55.  
  56. /*
  57.  
  58.     Here are the current routine names and the translations to the older forms.
  59.     Please use the newer forms in all new code and migrate the older names out of existing
  60.     code as maintainance permits.
  61.     
  62.     New Name                    Old Name(s)
  63.     
  64.     CompareString                IUCompPString IUMagString IUMagPString IUCompString 
  65.     CompareText
  66.     DateString                    IUDatePString IUDateString 
  67.     EqualString                            
  68.     ExtendedToString            FormatX2Str
  69.     FindScriptRun
  70.     FindWordBreaks                NFindWord FindWord
  71.     FormatRecToString            Format2Str
  72.     GetIndString            
  73.     GetString
  74.     IdenticalString                IUMagIDString IUMagIDPString IUEqualString IUEqualPString
  75.     IdenticalText
  76.     InitDateCache
  77.     LanguageOrder                IULangOrder
  78.     LongDateString                IULDateString
  79.     LongTimeString                IULTimeString
  80.     LowercaseText                LwrText LowerText
  81.     Munger
  82.     NewString                
  83.     NumToString                
  84.     RelString                
  85.     ReplaceText
  86.     ScriptOrder                    IUScriptOrder
  87.     SetString                
  88.     StringOrder                    IUStringOrder
  89.     StringToDate                String2Date
  90.     StringToExtended            FormatStr2X
  91.     StringToFormatRec            Str2Format
  92.     StringToNum                
  93.     StringToTime                                
  94.     StripDiacritics                StripText
  95.     StyledLineBreak
  96.     TextOrder
  97.     TimeString                    IUTimeString IUTimePString
  98.     TruncString
  99.     TruncText
  100.     UpperString                    UprString
  101.     UppercaseStripDiacritics    StripUpperText
  102.     UppercaseText                UprText UprText
  103. */
  104. /* New constants for System 7.0: */
  105.  
  106. enum {
  107. /* Constants for truncWhere argument in TruncString and TruncText */
  108.     truncEnd                    = 0,                            /* Truncate at end */
  109.     truncMiddle                    = 0x4000,                        /* Truncate in middle */
  110.     smTruncEnd                    = 0,                            /* Truncate at end - obsolete */
  111.     smTruncMiddle                = 0x4000,                        /* Truncate in middle - obsolete */
  112. /* Constants for TruncString and TruncText results */
  113.     notTruncated                = 0,                            /* No truncation was necessary */
  114.     truncated                    = 1,                            /* Truncation performed */
  115.     truncErr                    = -1,                            /* General error */
  116.     smNotTruncated                = 0,                            /* No truncation was necessary - obsolete */
  117.     smTruncated                    = 1,                            /* Truncation performed    - obsolete */
  118.     smTruncErr                    = -1                            /* General error - obsolete */
  119. };
  120.  
  121. enum {
  122.     fVNumber                    = 0,                            /* first version of NumFormatString */
  123. /* Special language code values for Language Order */
  124.     systemCurLang                = -2,                            /* current (itlbLang) lang for system script */
  125.     systemDefLang                = -3,                            /* default (table) lang for system script */
  126.     currentCurLang                = -4,                            /* current (itlbLang) lang for current script */
  127.     currentDefLang                = -5,                            /* default lang for current script */
  128.     scriptCurLang                = -6,                            /* current (itlbLang) lang for specified script */
  129.     scriptDefLang                = -7                            /* default language for a specified script */
  130. };
  131.  
  132. enum {
  133.     iuSystemCurLang                = -2,                            /* <obsolete> current (itlbLang) lang for system script */
  134.     iuSystemDefLang                = -3,                            /* <obsolete> default (table) lang for system script */
  135.     iuCurrentCurLang            = -4,                            /* <obsolete> current (itlbLang) lang for current script */
  136.     iuCurrentDefLang            = -5,                            /* <obsolete> default lang for current script */
  137.     iuScriptCurLang                = -6                            /* <obsolete> current (itlbLang) lang for specified script */
  138. };
  139.  
  140. enum {
  141. /* <obsolete> default language for a specified script */
  142.     iuScriptDefLang                = -7
  143. };
  144.  
  145. typedef SInt8 StyledLineBreakCode;
  146.  
  147.  
  148. enum {
  149.     smBreakWord,
  150.     smBreakChar,
  151.     smBreakOverflow
  152. };
  153.  
  154. typedef SInt8 FormatClass;
  155.  
  156.  
  157. enum {
  158.     fPositive,
  159.     fNegative,
  160.     fZero
  161. };
  162.  
  163. typedef SInt8 FormatResultType;
  164.  
  165.  
  166. enum {
  167.     fFormatOK,
  168.     fBestGuess,
  169.     fOutOfSynch,
  170.     fSpuriousChars,
  171.     fMissingDelimiter,
  172.     fExtraDecimal,
  173.     fMissingLiteral,
  174.     fExtraExp,
  175.     fFormatOverflow,
  176.     fFormStrIsNAN,
  177.     fBadPartsTable,
  178.     fExtraPercent,
  179.     fExtraSeparator,
  180.     fEmptyFormatString
  181. };
  182.  
  183. struct NumFormatString {
  184.     UInt8                            fLength;
  185.     UInt8                            fVersion;
  186.     char                            data[254];                    /* private data */
  187. };
  188. typedef struct NumFormatString NumFormatString;
  189.  
  190. typedef struct NumFormatString NumFormatStringRec;
  191.  
  192. struct FVector {
  193.     short                            start;
  194.     short                            length;
  195. };
  196. typedef struct FVector FVector;
  197.  
  198. /* index by [fPositive..fZero] */
  199. typedef FVector TripleInt[3];
  200.  
  201. struct ScriptRunStatus {
  202.     SInt8                            script;
  203.     SInt8                            runVariant;
  204. };
  205. typedef struct ScriptRunStatus ScriptRunStatus;
  206.  
  207. /* New types for System 7.0: */
  208. /* Type for truncWhere parameter in new TruncString, TruncText */
  209. typedef short TruncCode;
  210.  
  211.  
  212. enum {
  213.     shortDate,
  214.     longDate,
  215.     abbrevDate
  216. };
  217.  
  218. typedef SInt8 DateForm;
  219.  
  220.  
  221. enum {
  222. /* StringToDate status values */
  223.     fatalDateTime                = 0x8000,                        /* StringToDate and String2Time mask to a fatal error */
  224.     longDateFound                = 1,                            /* StringToDate mask to long date found */
  225.     leftOverChars                = 2,                            /* StringToDate & Time mask to warn of left over characters */
  226.     sepNotIntlSep                = 4,                            /* StringToDate & Time mask to warn of non-standard separators */
  227.     fieldOrderNotIntl            = 8,                            /* StringToDate & Time mask to warn of non-standard field order */
  228.     extraneousStrings            = 16,                            /* StringToDate & Time mask to warn of unparsable strings in text */
  229.     tooManySeps                    = 32,                            /* StringToDate & Time mask to warn of too many separators */
  230.     sepNotConsistent            = 64,                            /* StringToDate & Time mask to warn of inconsistent separators */
  231.     tokenErr                    = 0x8100,                        /* StringToDate & Time mask for 'tokenizer err encountered' */
  232.     cantReadUtilities            = 0x8200,
  233.     dateTimeNotFound            = 0x8400,
  234.     dateTimeInvalid                = 0x8800
  235. };
  236.  
  237. typedef short StringToDateStatus;
  238.  
  239. typedef short String2DateStatus;
  240.  
  241. struct DateCacheRecord {
  242.     short                            hidden[256];                /* only for temporary use */
  243. };
  244. typedef struct DateCacheRecord DateCacheRecord;
  245.  
  246. typedef DateCacheRecord *DateCachePtr;
  247.  
  248. struct BreakTable {
  249.     char                            charTypes[256];
  250.     short                            tripleLength;
  251.     short                            triples[1];
  252. };
  253. typedef struct BreakTable BreakTable;
  254.  
  255. typedef BreakTable *BreakTablePtr;
  256.  
  257. /* New NBreakTable for System 7.0: */
  258. struct NBreakTable {
  259.     SInt8                            flags1;
  260.     SInt8                            flags2;
  261.     short                            version;
  262.     short                            classTableOff;
  263.     short                            auxCTableOff;
  264.     short                            backwdTableOff;
  265.     short                            forwdTableOff;
  266.     short                            doBackup;
  267.     short                            length;                        /* length of NBreakTable */
  268.     char                            charTypes[256];
  269.     short                            tables[1];
  270. };
  271. typedef struct NBreakTable NBreakTable;
  272.  
  273. typedef NBreakTable *NBreakTablePtr;
  274.  
  275. /*
  276.     The following functions are new names that work on 68k and PowerPC
  277. */
  278. extern pascal OSErr InitDateCache(DateCachePtr theCache)
  279.  FOURWORDINLINE(0x2F3C, 0x8204, 0xFFF8, 0xA8B5);
  280. extern pascal long Munger(Handle h, long offset, const void *ptr1, long len1, const void *ptr2, long len2)
  281.  ONEWORDINLINE(0xA9E0);
  282. extern pascal StringHandle NewString(ConstStr255Param theString)
  283.  ONEWORDINLINE(0xA906);
  284. extern pascal void SetString(StringHandle theString, ConstStr255Param strNew)
  285.  ONEWORDINLINE(0xA907);
  286. extern pascal StringHandle GetString(short stringID)
  287.  ONEWORDINLINE(0xA9BA);
  288. extern pascal void GetIndString(Str255 theString, short strListID, short index);
  289. extern pascal short ScriptOrder(ScriptCode script1, ScriptCode script2)
  290.  THREEWORDINLINE(0x3F3C, 0x001E, 0xA9ED);
  291. extern pascal StyledLineBreakCode StyledLineBreak(Ptr textPtr, long textLen, long textStart, long textEnd, long flags, Fixed *textWidth, long *textOffset)
  292.  FOURWORDINLINE(0x2F3C, 0x821C, 0xFFFE, 0xA8B5);
  293. extern pascal short TruncString(short width, Str255 theString, TruncCode truncWhere)
  294.  FOURWORDINLINE(0x2F3C, 0x8208, 0xFFE0, 0xA8B5);
  295. extern pascal short TruncText(short width, Ptr textPtr, short *length, TruncCode truncWhere)
  296.  FOURWORDINLINE(0x2F3C, 0x820C, 0xFFDE, 0xA8B5);
  297. extern pascal short ReplaceText(Handle baseText, Handle substitutionText, Str15 key)
  298.  FOURWORDINLINE(0x2F3C, 0x820C, 0xFFDC, 0xA8B5);
  299. extern pascal void FindWordBreaks(Ptr textPtr, short textLength, short offset, Boolean leadingEdge, BreakTablePtr breaks, OffsetTable offsets, ScriptCode script)
  300.  FOURWORDINLINE(0x2F3C, 0xC012, 0x001A, 0xA8B5);
  301. extern pascal void LowercaseText(Ptr textPtr, short len, ScriptCode script)
  302.  SIXWORDINLINE(0x3F3C, 0x0000, 0x2F3C, 0x800A, 0xFFB6, 0xA8B5);
  303. extern pascal void UppercaseText(Ptr textPtr, short len, ScriptCode script)
  304.  SIXWORDINLINE(0x3F3C, 0x0400, 0x2F3C, 0x800A, 0xFFB6, 0xA8B5);
  305. extern pascal void StripDiacritics(Ptr textPtr, short len, ScriptCode script)
  306.  SIXWORDINLINE(0x3F3C, 0x0200, 0x2F3C, 0x800A, 0xFFB6, 0xA8B5);
  307. extern pascal void UppercaseStripDiacritics(Ptr textPtr, short len, ScriptCode script)
  308.  SIXWORDINLINE(0x3F3C, 0x0600, 0x2F3C, 0x800A, 0xFFB6, 0xA8B5);
  309. extern pascal ScriptRunStatus FindScriptRun(Ptr textPtr, long textLen, long *lenUsed)
  310.  FOURWORDINLINE(0x2F3C, 0x820C, 0x0026, 0xA8B5);
  311. extern pascal Boolean EqualString(ConstStr255Param str1, ConstStr255Param str2, Boolean caseSensitive, Boolean diacSensitive);
  312. extern pascal void UpperString(Str255 theString, Boolean diacSensitive);
  313. extern pascal void StringToNum(ConstStr255Param theString, long *theNum);
  314. extern pascal void NumToString(long theNum, Str255 theString);
  315. extern pascal short RelString(ConstStr255Param str1, ConstStr255Param str2, Boolean caseSensitive, Boolean diacSensitive);
  316. extern pascal StringToDateStatus StringToDate(Ptr textPtr, long textLen, DateCachePtr theCache, long *lengthUsed, LongDateRec *dateTime)
  317.  FOURWORDINLINE(0x2F3C, 0x8214, 0xFFF6, 0xA8B5);
  318. extern pascal StringToDateStatus StringToTime(Ptr textPtr, long textLen, DateCachePtr theCache, long *lengthUsed, LongDateRec *dateTime)
  319.  FOURWORDINLINE(0x2F3C, 0x8214, 0xFFF4, 0xA8B5);
  320. extern pascal FormatStatus ExtendedToString(extended80 *x, const NumFormatString *myCanonical, const NumberParts *partsTable, Str255 outString)
  321.  FOURWORDINLINE(0x2F3C, 0x8210, 0xFFE8, 0xA8B5);
  322. extern pascal FormatStatus StringToExtended(ConstStr255Param source, const NumFormatString *myCanonical, const NumberParts *partsTable, extended80 *x)
  323.  FOURWORDINLINE(0x2F3C, 0x8210, 0xFFE6, 0xA8B5);
  324. extern pascal FormatStatus StringToFormatRec(ConstStr255Param inString, const NumberParts *partsTable, NumFormatString *outString)
  325.  FOURWORDINLINE(0x2F3C, 0x820C, 0xFFEC, 0xA8B5);
  326. extern pascal FormatStatus FormatRecToString(const NumFormatString *myCanonical, const NumberParts *partsTable, Str255 outString, TripleInt positions)
  327.  FOURWORDINLINE(0x2F3C, 0x8210, 0xFFEA, 0xA8B5);
  328. /*
  329.     The following functions are old names, but are required for PowerPC builds
  330.     becuase InterfaceLib exports these names, instead of the new ones.
  331. */
  332. extern pascal short IUMagString(const void *aPtr, const void *bPtr, short aLen, short bLen)
  333.  THREEWORDINLINE(0x3F3C, 0x000A, 0xA9ED);
  334. extern pascal short IUMagIDString(const void *aPtr, const void *bPtr, short aLen, short bLen)
  335.  THREEWORDINLINE(0x3F3C, 0x000C, 0xA9ED);
  336. extern pascal short IUMagPString(const void *aPtr, const void *bPtr, short aLen, short bLen, Handle itl2Handle)
  337.  THREEWORDINLINE(0x3F3C, 0x001A, 0xA9ED);
  338. extern pascal short IUMagIDPString(const void *aPtr, const void *bPtr, short aLen, short bLen, Handle itl2Handle)
  339.  THREEWORDINLINE(0x3F3C, 0x001C, 0xA9ED);
  340. extern pascal void IUDateString(long dateTime, DateForm longFlag, Str255 result)
  341.  TWOWORDINLINE(0x4267, 0xA9ED);
  342. extern pascal void IUTimeString(long dateTime, Boolean wantSeconds, Str255 result)
  343.  THREEWORDINLINE(0x3F3C, 0x0002, 0xA9ED);
  344. extern pascal void IUDatePString(long dateTime, DateForm longFlag, Str255 result, Handle intlHandle)
  345.  THREEWORDINLINE(0x3F3C, 0x000E, 0xA9ED);
  346. extern pascal void IUTimePString(long dateTime, Boolean wantSeconds, Str255 result, Handle intlHandle)
  347.  THREEWORDINLINE(0x3F3C, 0x0010, 0xA9ED);
  348. extern pascal void IULDateString(LongDateTime *dateTime, DateForm longFlag, Str255 result, Handle intlHandle)
  349.  THREEWORDINLINE(0x3F3C, 0x0014, 0xA9ED);
  350. extern pascal void IULTimeString(LongDateTime *dateTime, Boolean wantSeconds, Str255 result, Handle intlHandle)
  351.  THREEWORDINLINE(0x3F3C, 0x0016, 0xA9ED);
  352. extern pascal short IUScriptOrder(ScriptCode script1, ScriptCode script2)
  353.  THREEWORDINLINE(0x3F3C, 0x001E, 0xA9ED);
  354. extern pascal short IULangOrder(LangCode language1, LangCode language2)
  355.  THREEWORDINLINE(0x3F3C, 0x0020, 0xA9ED);
  356. extern pascal short IUTextOrder(const void *aPtr, const void *bPtr, short aLen, short bLen, ScriptCode aScript, ScriptCode bScript, LangCode aLang, LangCode bLang)
  357.  THREEWORDINLINE(0x3F3C, 0x0022, 0xA9ED);
  358. extern pascal void FindWord(Ptr textPtr, short textLength, short offset, Boolean leadingEdge, BreakTablePtr breaks, OffsetTable offsets)
  359.  FOURWORDINLINE(0x2F3C, 0x8012, 0x001A, 0xA8B5);
  360. extern pascal void NFindWord(Ptr textPtr, short textLength, short offset, Boolean leadingEdge, NBreakTablePtr nbreaks, OffsetTable offsets)
  361.  FOURWORDINLINE(0x2F3C, 0x8012, 0xFFE2, 0xA8B5);
  362.  
  363. #if !GENERATINGCFM
  364. #pragma parameter UprText(__A0, __D0)
  365. #endif
  366. extern pascal void UprText(Ptr textPtr, short len)
  367.  ONEWORDINLINE(0xA054);
  368.  
  369. #if !GENERATINGCFM
  370. #pragma parameter LwrText(__A0, __D0)
  371. #endif
  372. extern pascal void LwrText(Ptr textPtr, short len)
  373.  ONEWORDINLINE(0xA056);
  374.  
  375. #if !GENERATINGCFM
  376. #pragma parameter LowerText(__A0, __D0)
  377. #endif
  378. extern pascal void LowerText(Ptr textPtr, short len)
  379.  ONEWORDINLINE(0xA056);
  380.  
  381. #if !GENERATINGCFM
  382. #pragma parameter StripText(__A0, __D0)
  383. #endif
  384. extern pascal void StripText(Ptr textPtr, short len)
  385.  ONEWORDINLINE(0xA256);
  386.  
  387. #if !GENERATINGCFM
  388. #pragma parameter UpperText(__A0, __D0)
  389. #endif
  390. extern pascal void UpperText(Ptr textPtr, short len)
  391.  ONEWORDINLINE(0xA456);
  392.  
  393. #if !GENERATINGCFM
  394. #pragma parameter StripUpperText(__A0, __D0)
  395. #endif
  396. extern pascal void StripUpperText(Ptr textPtr, short len)
  397.  ONEWORDINLINE(0xA656);
  398. extern pascal short IUCompPString(ConstStr255Param aStr, ConstStr255Param bStr, Handle itl2Handle);
  399. extern pascal short IUEqualPString(ConstStr255Param aStr, ConstStr255Param bStr, Handle itl2Handle);
  400. extern pascal short IUStringOrder(ConstStr255Param aStr, ConstStr255Param bStr, ScriptCode aScript, ScriptCode bScript, LangCode aLang, LangCode bLang);
  401. extern pascal short IUCompString(ConstStr255Param aStr, ConstStr255Param bStr);
  402. extern pascal short IUEqualString(ConstStr255Param aStr, ConstStr255Param bStr);
  403. /*
  404.     The following are macros which map new names to the names exported by InterfaceLib
  405. */
  406. #define DateString(dateTime, longFlag, result, intlHandle)  \
  407.     IUDatePString( dateTime, longFlag, result, intlHandle)
  408. #define TimeString(dateTime, wantSeconds, result, intlHandle)  \
  409.     IUTimePString( dateTime, wantSeconds, result, intlHandle)
  410. #define LongDateString(dateTime, longFlag, result, intlHandle)  \
  411.     IULDateString(dateTime, longFlag, result, intlHandle)
  412. #define LongTimeString(dateTime, wantSeconds, result, intlHandle)  \
  413.     IULTimeString( dateTime, wantSeconds, result, intlHandle)
  414. #define CompareString(aStr, bStr, itl2Handle)  \
  415.     IUCompPString(aStr, bStr, itl2Handle)
  416. #define IdenticalString(aStr, bStr, itl2Handle)  \
  417.     IUEqualPString(aStr, bStr, itl2Handle)
  418. #define CompareText(aPtr, bPtr, aLen, bLen, itl2Handle)  \
  419.     IUMagPString( aPtr, bPtr, aLen, bLen, itl2Handle)
  420. #define IdenticalText(aPtr, bPtr, aLen, bLen, itl2Handle)  \
  421.     IUMagIDPString( aPtr, bPtr, aLen, bLen, itl2Handle)
  422. #define LanguageOrder(language1, language2)  \
  423.     IULangOrder( language1, language2 )
  424. #define TextOrder(aPtr, bPtr, aLen, bLen, aScript, bScript, aLang, bLang)  \
  425.     IUTextOrder( aPtr, bPtr, aLen, bLen, aScript, bScript, aLang, bLang)
  426. #define StringOrder(aStr, bStr, aScript, bScript, aLang, bLang)  \
  427.     IUStringOrder(aStr, bStr, aScript, bScript, aLang, bLang)
  428. #if CGLUESUPPORTED
  429. extern Boolean equalstring(const char *str1, const char *str2, Boolean caseSensitive, Boolean diacSensitive);
  430. extern void upperstring(char *theString, Boolean diacSensitive);
  431. extern short relstring(const char *str1, const char *str2, Boolean caseSensitive, Boolean diacSensitive);
  432. extern void setstring(StringHandle theString, const char *strNew);
  433. extern StringHandle newstring(const char *theString);
  434. extern void getindstring(char *theString, short strListID, short index);
  435. extern void stringtonum(const char *theString, long *theNum);
  436. extern void numtostring(long theNum, char *theString);
  437. #if OLDROUTINENAMES
  438. #define uprstring(theString, diacSensitive) upperstring(theString, diacSensitive)
  439. extern short iucompstring(const char *aStr, const char *bStr);
  440. extern short iuequalstring(const char *aStr, const char *bStr);
  441. extern short iucomppstring(const char *aStr, const char *bStr, Handle intlHandle);
  442. extern short iuequalpstring(const char *aStr, const char *bStr, Handle intlHandle);
  443. extern short iustringorder(const char *aStr, const char *bStr, ScriptCode aScript, ScriptCode bScript, LangCode aLang, LangCode bLang);
  444. extern void iudatestring(long dateTime, DateForm longFlag, char *result);
  445. extern void iudatepstring(long dateTime, DateForm longFlag, char *result, Handle intlHandle);
  446. extern void iutimestring(long dateTime, Boolean wantSeconds, char *result);
  447. extern void iutimepstring(long dateTime, Boolean wantSeconds, char *result, Handle intlHandle);
  448. extern void iuldatestring(LongDateTime *dateTime, DateForm longFlag, char *result, Handle intlHandle);
  449. extern void iultimestring(LongDateTime *dateTime, Boolean wantSeconds, char *result, Handle intlHandle);
  450. #endif
  451. #endif
  452. /*
  453.     The following are macros which map old names to the names exported by InterfaceLib
  454. */
  455. #if OLDROUTINENAMES
  456. #define UprString(theString, diacSensitive)  \
  457.     UpperString(theString, diacSensitive)
  458. #define String2Date(textPtr, textLen, theCache, lengthUsed, dateTime)  \
  459.     StringToDate(textPtr, textLen, theCache, lengthUsed, dateTime)
  460. #define String2Time(textPtr, textLen, theCache, lengthUsed, dateTime)  \
  461.     StringToTime(textPtr, textLen, theCache, lengthUsed, dateTime)
  462. #define FormatX2Str(x, myCanonical, partsTable, outString)  \
  463.     ExtendedToString( x, myCanonical, partsTable, outString)
  464. #define FormatStr2X(source, myCanonical, partsTable, x)  \
  465.     StringToExtended( source, myCanonical, partsTable, x)
  466. #define Str2Format(inString, partsTable, outString)  \
  467.     StringToFormatRec(inString, partsTable, outString)
  468. #define Format2Str(myCanonical, partsTable, outString, positions)  \
  469.     FormatRecToString(myCanonical, partsTable, outString, positions)
  470. #endif
  471. #if !OLDROUTINELOCATIONS
  472. extern StringPtr c2pstr(char *aStr);
  473. extern pascal StringPtr C2PStr(Ptr cString);
  474. extern char *p2cstr(StringPtr aStr);
  475. extern pascal Ptr P2CStr(StringPtr pString);
  476. #endif
  477.  
  478. #if PRAGMA_IMPORT_SUPPORTED
  479. #pragma import off
  480. #endif
  481.  
  482. #if PRAGMA_ALIGN_SUPPORTED
  483. #pragma options align=reset
  484. #endif
  485.  
  486. #ifdef __cplusplus
  487. }
  488. #endif
  489.  
  490. #endif /* __TEXTUTILS__ */
  491.